約 6,131,811 件
https://w.atwiki.jp/sakaj/pages/10.html
実行中のメソッド名を取得する。 new Throwable().getStackTrace()[0].getMethodName(); javascript document.cookie; プレースホルダ String year = yyyy.format(selectedDate); String month = MM.format(selectedDate); String date = dd.format(selectedDate); Object[] dateArgs = { year, month, date }; MessageFormat form = new MessageFormat("{0}年{1}月{2}日"); e.printStackTrace?()の文字列を取得する StringWriter stringWriter = new StringWriter(); ex.printStackTrace(new PrintWriter(stringWriter)); String message = stringWriter.getBuffer().toString(); ソースをShift_JISで書いて、EUC-JPで出力するってこと %@ page contentType=text/html; charset=EUC-JP" pageEncoding="Shift_JIS" % Javaから、WEBブラウザを起動(Windowsのみ) Runtime.getRuntime().exec( new String[] { "rundll32.exe", "url.dll,FileProtocolHandler", "http //jp.sun.com/" }); WEBアプリケーションのルートを取得してパスを生成する String root_path = this.getServletContext().getRealPath("/"); String file_path = root_path + "hoge.dat" Set-Cookie UserName=lightbox Cookie UserName = new Cookie( "UserName", "lightbox" ); response.addCookie( UserName ); DOM取得 public Document getDocument( String xml ){ try { // ドキュメントビルダーファクトリを生成 DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); // ドキュメントビルダーを生成 DocumentBuilder builder = dbfactory.newDocumentBuilder(); // パースを実行してDocumentオブジェクトを取得 System.out.println(getTextXml()); Document doc = builder.parse( new ByteArrayInputStream( xml.getBytes("UTF-8") ) ); return doc; // ルート要素を取得(タグ名:message) Element root = doc.getDocumentElement(); // 最初の子ノード(テキストノード)の値を表示 System.out.println(root.getFirstChild().getNodeName()); } catch (Exception e) { e.printStackTrace(); } } public class SgPsr{ public Object parse( Node n ){ //Node root = doc.getDocumentElement(); if( n.getNodeType()==Node.TEXT_NODE n.getNodeValue().trim().length()==0 ){ return ""; } NodeList cc = n.getChildNodes(); for( int i=0; i cc.getLength(); i++ ){ Node c = cc.item(i); String name = c.getNodeName(); if( name.equals("ItemSearchResponse") ){ return parse(c); } if( name.equals("Items") ){ return parseItems(c); } } return ""; } public Object parseItems( Node n ){ List aa = new ArrayList(); NodeList cc = n.getChildNodes(); for( int i=0; i cc.getLength(); i++ ){ Node c = cc.item(i); String name = c.getNodeName(); if( name.equals("Item") ){ aa.add( parse(c) ); } } return ""; } } dump Query //dump Query public String dumpQuery(HttpServletRequest request){ Map ?, ? qsMap = request.getParameterMap(); Set ? ks = qsMap.keySet(); Map ? m = new HashMap(); for( Iterator ? i = ks.iterator(); i.hasNext(); ){ String k = i.next()+""; String[] v = (String[])qsMap.get(k); m.put(k, v[0]); } return ""+m; } ファイルのタイムスタンプを取得する。 File fp; long tm; java.util.Date da; String timeStr; fp = new File("test.txt"); tm = fp.lastModified(); da = new java.util.Date( tm ); timeStr = new String(DateFormat.getDateTimeInstance().format(da) ); MD5 MessageDigest md = MessageDigest.getInstance("MD5"); byte[] xx = "password".getBytes(); md.update(xx);//dat配列からダイジェストを計算する byte[] yy = md.digest(); Hex public String toHexString(byte[] arr) { StringBuffer buff = new StringBuffer(arr.length * 2); for (int i = 0; i arr.length; i++) { String b = Integer.toHexString(arr[i] 0xff); if (b.length() == 1) { buff.append("0"); } buff.append(b); } return buff.toString(); }
https://w.atwiki.jp/yo-kichi/pages/83.html
スコーラとは Javaスコーラ2010まとめ 参考にして授業をやるかた、人に教える方へ 目標 プログラミングを楽しむ 自分でプログラムを作れるようになる TODO 現状ではこのwikiの情報を活用できない 情報の整理、集約が必要 javaスコーラ2010年度反省 2010年 ガイダンス HelloJava, 変数 条件分岐、繰り返し、変数続き 配列、繰り返し 今までの復習 クラスとメソッド メソッドの種類 コンストラクタ、メソッドの使い方 GUIを使ったプログラム カプセル化 問題集 ゲーム 問題続き 夏休みの予定を決める 問題集・ゲーム続き 夏休みJavaスコーラ特設ページ 後期ガイダンス 復習とOOP OOPなプログラムを読もう 継承 スレッド ソート、スタック データ構造(Listなど) AppletでGUI Timerつくってみるテスト 前回と同じ 復習 復習とプログラムの改良 自分で考えて作るプログラム 自分で考えて作るプログラム2 スコーラwikiテンプレ **今回の目標 **役割り分担, 内容 **検討中 **準備 **宿題 問題と答え **反省 備考 スコーラノートPCを持っていく プログラミングに慣れるまで、エディタで。 準備の心得 用語 オブジェクト指向ってなによ 括弧の呼び方 ひらめいたときようページ コメント、意見など Java スコーラ 2010
https://w.atwiki.jp/kanekotky/pages/14.html
Testing TestNG Testing EJB3 apps with TestNG Announcing TestNG 4.5 その他テスト ConTestを使用したマルチスレッド・ユニットのテスト ActiveMQ 4.0 release How to tune Apache ActiveMQ Tangosol http //www.tangosol.com/html/index.shtml クラスタ化アプリケーションのセッション管理 言語 Javaのオブジェクトサイズの測り方、sizeof 浅煎り珈琲 Java アプリケーション入門 PDF Javaアプリケーションから動的にPDFファイルを生成するiText Spring PetStore SpringPetstore JPetstore OrderForm must be Serializable 自動化 JavaOne Tokyo 2005 - 自動化、心掛けてますか? 貴重な時間は大切に DI Container DIxAOPコンテナ「Seasar2とSpring」 先進DIコンテナ「Apache Geronimo」、「HiveMind」を試す Using Dependency Injection in Java EE 5.0 Spring AOPサンプルアプリでAOPを理解する AOP aspectj project JBossAOP アスペクト指向のバリエーション解説 2004年末~2005年夏までの連載。少し古いのだが、AspectJ、JBossAOP、AspectWerkzについて解説。 AOPの理想と現実 java.lang.instrument java.lang.instrument JTA Javaの理論と実践 JTSを理解する -- 見えない魔法 Mustang jrunscriptビルトインオブジェクト一覧 Image I/O Improvements in Mustang JOnAS ObjectWeb Conference 2006 - ObjectWeb、次期JOnASでは自律機能を強化 ライブラリ Joda Time - Java date and time API性能等も考慮された日付処理ライブラリ JGraphJGraph is the most powerful, easy-to-use, feature-rich and standards-compliant open source graph component available for Java Tools IBM Thread and Monitor Dump Analyzer for Java Technology 他 Java WebSphere についてのいろいろ EHCache Hibernateでインテグレーション層のDAOデザインを考える MD5 cryptによるLinuxでのJavaアプリの保護 Gavin Kingが答えた「EJB 3.0がHibernate + Springより優れていると思う点」 Strutsで作るセキュアWebアプリケーション 【Jakarta/Apacheウォッチ】第25回 リリース間近!アーキテクチャを一新したStruts 1.3 Javaクラスの居場所 this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); BEA WebLogic Server 9 sets another SPECjAppServer2004 top mark The new features in Servlet 2.5 worthwhile? Tomcat Performance Higher on Linux Tapestry 4.0 Released Unit Testing Serialization Evolution Use EJB3 Persistence with Spring Java/J2EE Requirement Coverage Tool - JRequire V1.1 released Hibernate 3.1.1 released BEA to Open Source its Kodo Java Persistence APIs FIT plug-in for Maven released A New Java Persistence API for Berkeley DB Using EJB 3.0 outside the container AOP@Work AOP myths and realities published TrackIt 1.0.0, web-based project tracking tool, released Sun、JSR 292を提出 - Java仮想マシンレベルで動的な型を提案、他 GroovyによるRuby on Railsライクなフレームワーク - Grails 0.1公開 入力値検証用フレームワーク - Commons Validator 1.3.0、新バリデータ追加も Jakarta Commons IO Package 1.2 - ディレクトリごとコピー新機能も Configuration Management in Java EE Applications Using Subversion Strecks Strecks is a set of extensions to the Struts web development framework aimed at Java 5 users. The aim of Strecks is to enhance the capability of Struts in terms of productivity and maintainability. Strecks makes use of Java 5 language features, in particular JSR-175 annotations, to simplify the programming model for Struts applications. Javapedia Wicket -XX +HeapDumpOnOutOfMemoryError Javaバグに投票を Java例文集 for バグレポート JNIEasy
https://w.atwiki.jp/cappu/pages/26.html
Eclipse Tips Java クラス検索 Ctrl+Shift+T リソースファイル検索 Ctrl+Shift+R Eclipse起動オプション一覧 Running Eclipse eclipse -vmargs -Xmx memory size -data workspacePath ワークスペース指定 -nl locale Example values "en_US" and "fr_FR_EURO" -consolelog クラス検索 Ctrl+Shift+T リソースファイル検索 Ctrl+Shift+R VM引数 メモリ使用領域 -Xms40m -Xmx256m Permanent Space 初期値1MB -XX PermSize 2m Permanent Space 最大値64MB -XX MaxPermSize 128m
https://w.atwiki.jp/marokubi/pages/21.html
javaに再々挑戦してみる。。。 目標 javaが組める環境を用意する(eclipse) javaで簡単なプログラムを作れる 環境用意 (1)JREかJDKのインストール Java実行環境としてJREかJDKが必要 →JDKをインストールしておきます。 [ http //java.sun.com/javase/downloads/index.jsp ]から jdk-6u5-windows-i586-p.exeをダウンロード →exeを実行 (2)eclipseのインストール パッケージのダウンロード [ http //www.eclipse.org/downloads/index.php ]から パッケージをダウンロードする。 パッケージの差は含まれているプラグインの差となります。→「こちら」参照 現時点ではあまり気にせず [eclipse-reporting-galileo-SR1-win32.zip] を選択する。 展開する。 →[d \share\eclipse]となるように置く eclipseのアンインストール 単にパッケージを置いたフォルダを削除すればよい(上記の場合は[d \share\eclipse]を削除) eclipseでのjavaアプリの作成 (1)プロジェクトを作る [File]→[New]→[Project] ↓ [Sekect a wizard]→[Java]→[Java Project] [Next] ↓ Contents [Project name ]→HelloWorld [Create new Project in workspace] JRE Use an execution environment JRE →[JavaSE-1.6] Project layout Create separate folders for source and class files [Next] ↓ (略0 (2)クラスを作る [Package Explorer]の[HelloWorld]をマウス右ボタンでクリック 表示されるポップアップメニューで[New]→[Class]を指定 表示される[New Java Class]ダイアログで、[Name]にHelloWorldと入力 同じ[New Java Class]ダイアログで、[Which method stubs would you like to create?]のところにある[public static void main(String[] args)]をチェックする。 [終了]ボタンをクリック ↓ クラスのソースコードを記述する (3)ソースコードの編集 保存[Ctrl]+[S] (4)Javaアプリの実行(クラスをワークベンチから実行する [Package Explorer]の[HelloWorld]をマウス右ボタンでクリック [Run As]→[Java Application] 参考URL http //www.atmarkit.co.jp/fjava/rensai4/java5eclipse01/java5eclipse01_1.html
https://w.atwiki.jp/javamock/pages/31.html
Calendar Javaにおいて java.util.Calendarクラスは日付・時刻を扱うクラスです。 Calendarは以下のように抽象クラスとして宣言されています。 public abstract class Calendar extends Object implements Serializable, Cloneable Calendarのコンストラクタは protected Calendar() protected Calendar(TimeZone zone, Locale aLocale) とprotectedで宣言されています。 インスタンスを得るために通常はpublicのコンストラクタを使いますが、 Calendarのコンストラクタはprotectedで宣言されているので、 protectedで宣言されていないgetInstance()などを使いオブジェクトを作る必要があります。 getInstanceはstaticメソッドのため、Calendar.getInstance()のように使用します。 このようなインスタンスを生成するためのメソッドをファクトリメソッドと呼ぶそうです。 Calendar 使用例 1 CalendarSample1.java import java.util.Calendar; class CalendarSample1 { public static void main(String[] args) { // デフォルトのタイムゾーンおよびロケールを使用してカレンダを取得します Calendar calendarObject = Calendar.getInstance(); System.out.println(calendarObject); } } 実行結果 C \java javac CalendarSample1.java C \java java CalendarSample1 java.util.GregorianCalendar[time=1236166813703,areFieldsSet=true,areAllFieldsSet =true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Tokyo",offset=324000 00,dstSavings=0,useDaylight=false,transitions=10,lastRule=null],firstDayOfWeek=1 ,minimalDaysInFirstWeek=1,ERA=1,YEAR=2009,MONTH=2,WEEK_OF_YEAR=10,WEEK_OF_MONTH= 1,DAY_OF_MONTH=4,DAY_OF_YEAR=63,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOU R=8,HOUR_OF_DAY=20,MINUTE=40,SECOND=13,MILLISECOND=703,ZONE_OFFSET=32400000,DST_ OFFSET=0] 次にCalendarのフィールドを使います。 Calendar 使用例 2 (フィールド) Calendarには以下のstaticフィールドがあります。※他にもあります YEAR getおよびsetのための、年を示すフィールド値です。 MONTH getおよびsetのための、月を示すフィールド値です。 JANUARY(0), FEBRUARY(1)、MARCH(2)、APRIL(3)、MAY(4)、JUNE(5)、JULY(6)、 AUGUST(7)、SEPTEMBER(8)、OCTOBER(9)、NOVEMBER(10)、DECEMBER(11) DATE getおよびsetのためのフィールド値で、月の日を示します。 HOUR_OF_DAY getおよびsetのためのフィールド値で、時刻を示します。 MINUTE getおよびsetのためのフィールド値で、分を示します。 SECOND getおよびsetのためのフィールド値で、秒を示します。 DAY_OF_WEEK getおよびsetのためのフィールド値で、曜日を示します。 SUNDAY(1)、MONDAY(2)、TUESDAY(3)、WEDNESDAY(4)、THURSDAY(5)、FRIDAY(6)、SATURDAY(7) CalendarSample2.java import java.util.Calendar; class CalendarSample2 { public static void main(String[] args) { Calendar calendarObject = Calendar.getInstance(); int calendarYear = calendarObject.get(Calendar.YEAR); int calendarMonth = calendarObject.get(Calendar.MONTH) + 1; int calendarDay = calendarObject.get(Calendar.DATE); int calendarHour = calendarObject.get(Calendar.HOUR_OF_DAY); int calendarMinute = calendarObject.get(Calendar.MINUTE); int calendarSecond = calendarObject.get(Calendar.SECOND); int calendarWeek = calendarObject.get(Calendar.DAY_OF_WEEK); System.out.println(calendarYear + "/" + calendarMonth + "/" + calendarDay + "/ " + calendarHour + " " + calendarMinute + " " + calendarSecond + " " + getWeek(calendarWeek)); } // Calendar.DAY_OF_WEEKで得られた値を文字列に変換するメソッドです static String getWeek(int week) { String[] stringWeek = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"}; return stringWeek[week-1]; } } 実行結果 C \java javac CalendarSample2.java C \java java CalendarSample2 2009/3/4/ 21 17 26 WED Calendar 使用例 3 (get setメソッド) Calendarのget、setメソッドには以下のようなものがあるようです。 void set(int year, int month, int date) カレンダフィールド YEAR、MONTH、および DAY_OF_MONTH の値を設定します。 void set(int year, int month, int date, int hourOfDay, int minute) カレンダフィールド YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY、および MINUTE の値を設定します。 void set(int year, int month, int date, int hourOfDay, int minute, int second) フィールド YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE、および SECOND の値を設定します。 int get(int field) 指定されたカレンダフィールドの値を返します。 CalendarSample3.java import java.util.Calendar; class CalendarSample3 { public static void main(String[] args) { Calendar calendarObject = Calendar.getInstance(); calendarObject.set(2009,1,2); System.out.println(calendarObject.get(Calendar.YEAR)); System.out.println(calendarObject.get(Calendar.MONTH)); System.out.println(calendarObject.get(Calendar.DATE)); } } 実行結果 C \java javac CalendarSample3.java C \java java CalendarSample3 2009 1 2 Calendar 使用例 4 (addメソッド) add(int field, int amount)はCalendarのフィールドに対して加算(減算)を行うメソッドです。 fieldにはCalendarのフィールドを指定し、amountには加算する数値を指定します。 CalendarSample4.java import java.util.Calendar; class CalendarSample4 { public static void main(String[] args) { Calendar calendarObject = Calendar.getInstance(); printCalendar(calendarObject); calendarObject.add(Calendar.YEAR, 1); printCalendar(calendarObject); calendarObject.add(Calendar.MONTH, 1); printCalendar(calendarObject); calendarObject.add(Calendar.DATE, 1); printCalendar(calendarObject); } // Caldendarオブジェクトの日付を表示するメソッドです static void printCalendar(Calendar calendarObject) { int calendarYear = calendarObject.get(Calendar.YEAR); int calendarMonth = calendarObject.get(Calendar.MONTH) + 1; int calendarDay = calendarObject.get(Calendar.DATE); int calendarHour = calendarObject.get(Calendar.HOUR_OF_DAY); int calendarMinute = calendarObject.get(Calendar.MINUTE); int calendarSecond = calendarObject.get(Calendar.SECOND); int calendarWeek = calendarObject.get(Calendar.DAY_OF_WEEK); System.out.println(calendarYear + "/" + calendarMonth + "/" + calendarDay + "/ " + calendarHour + " " + calendarMinute + " " + calendarSecond + " " + getWeek(calendarWeek)); } // Calendar.DAY_OF_WEEKで得られた値を文字列に変換するメソッドです static String getWeek(int week) { String[] stringWeek = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"}; return stringWeek[week-1]; } } 実行結果 C \java javac CalendarSample4.java C \java java CalendarSample4 2009/3/4/ 22 12 38 WED 2010/3/4/ 22 12 38 THU 2010/4/4/ 22 12 38 SUN 2010/4/5/ 22 12 38 MON
https://w.atwiki.jp/chapati4it/pages/16.html
Java Javaは、サーバサイドによく利用されているプログラム言語です。 最近では、アンドロイドでも利用されています。 Javaサンプル 無名クラスにパラメータを渡す CSVファイルを読み込む Javaの乱数生成 乱数生成の性能 JavaでGMailによるメール送信(JavaMail使用 JavaでZipファイル解凍サンプル(commons-compress使用) JavaでZipファイル圧縮(commons-compress)テキスト一個だけ JavaでZipファイル圧縮(commons-compress)ファイルやディレクトリ指定 スネークケースとキャメルケースの変換 日付、時間を扱うサンプル 処理時間を計測するサンプル 文字列を切り取る substring の使い方 substring使用時のエラーと回避方法??? swingサンプル 基本 ウィンドウを表示するだけのサンプル JButton ボタンをクリックしたらメッセージを表示するサンプル Swingアプリを実行する 画像表示 画像表示(拡大縮小) ポップアップメニュー メニューを作る ファイル選択ダイアログから画像を選択して表示する コンボボックスを使ってみよう エクスプローラからファイルをドロップ ドロップを受け取るサンプル(文字列、ファイル) JListを表示するだけのサンプル JListにアイコンとテキストを表示する JList複数選択、単一選択サンプル JTableにCsvファイルを読み込んで表示 JTableエクスプローラ風サンプル JSliderサンプル JSliderサンプル ボリューム調整みたいなスライダ JSliderサンプル プログラムから操作する時にイベントを発生させない JSliderサンプル ボリューム調整みたいなスライダのUIクラス Zipファイル解凍サンプル JTableに一覧表示、ダブルクリックで画像を表示 MyJCalendar Swingでカレンダー型日付選択ダイアログのサンプル メニュー、タイトルバー、ステータスバー、ツールバーの表示on/off切り替えサンプル tips ウィンドウサイズをiniファイルに保存、復元 JTreeにディレクトリ構造を表示 JTreeとJListで作るエクスプローラ風のサンプル JTreeノード編集、前後の値をチェックする JTableにボタン表示、ボタン押したら行削除 フローレイアウトで強制改行 MP3プレイヤーサンプル(JLayer) MP3プレイヤーサンプル(JLayer,BasicPlayer) MP3のID3を読むサンプル(Java ID3 Tag Library + 文字化け対応) MP3プレイヤーサンプル(JLayer,BasicPlayer,Java ID3 Tag Library)一通りの機能実装 BasicPlayerサンプル(mp3, 音量調整) BasicPlayerサンプル(mp3, シーク, 時間表示) オリジナルのイベントを作ろう 帳票サンプル JasperReports5.0サンプル サンプルの実行 一番簡単なPDF出力 テンプレートにデータソースとパラメータ設定してPDF出力 CSVデータソースからPDF出力 PDFに動的に画像を埋め込み グループ分けと集計 Tomcatサンプル Tomcatメモ Tomcat7.0.37のインストールとeclipseの設定(Windows) サーブレットを作ってみる Tomcat7のインストールとwarファイルのデプロイ(ubunts12.04) warファイルをdotcloudにデプロイ サーブレットからJSPに遷移するサンプル サーブレットからCSVファイルをダウンロードするサンプル サーブレットからCSVファイルをダウンロードするサンプル(日本語ファイル名) サーブレットからファイルをダウンロードするサンプル(日本語ファイル名) Basic認証(UserDatabaseRealm)+DIGEST認証 JFreeChartで動的にグラフを出力するサンプル ファイルをアップロードするサンプル(Commons FileUplaod) クロスサイトスクリプティング脆弱性を体験してみるサンプル
https://w.atwiki.jp/java_pro/pages/70.html
Javaプログラムを実行する際の引数について復習しましょう。 コマンドプロンプトでプログラムのソースコード が置かれているフォルダに移動して。 javac Hogehoge.java と「javac」というコマンドの後にファイル名を指定してあげると コンパイルができます。 コンパイルをすると「Hogehoge.class」のように クラスファイルが同じフォルダに生成されます。 ここで java Hogehoge と「java」というコマンドの後にクラス名を指定してあげると プログラムが実行されます。 コマンドラインの引数(実行時の引数) プログラムを実行する際に、メソッドのように引数を渡すことが できます。 プログラムはmainメソッドから実行されますよね。 public static void main(String[] args) というふうにmainメソッドを宣言すると思いますが、ここの 「args」というString配列にコマンドラインの引数(実行時の引数)が 渡されます。 たとえば、 java Hogehoge moge fuga java のようにプログラムを実行したとすると "moge fuga java"の部分がコマンドラインの引数として渡されます。 これはプログラムで String args[] = {"moge", "fuga", "java"}; と宣言されたような形になります。 なので、この実行時にはargs[0]には"moge"という文字列が入っています。 ※プログラムを実行する際に任意に引数を渡すことができるということなので、 コマンドラインの引数を渡していなければargs[0]などは存在しない。 ※コマンドラインの引数として渡すことが出来るのは文字列のみ ○3級の人向けの課題。 コマンドライン実行時に受け取った引数を番号を付けて順番に 表示するプログラム「ArgsTest01.java」を作りましょう。 例) java ArgsTest01 hogehoge mogemoge fugafuga あなたが入力したのは 1 hogehoge 2 mogemoge 3 fugafuga java ArgsTest01 あなたが入力したのは ※JCPadでコマンドラインの引数を指定して実行する場合理は、 コマンド(C)の右のエリアに直接コマンドを入力しましょう。
https://w.atwiki.jp/java_pro/pages/27.html
import java.io.*; public class Copy1_2 { public static void main(String[] args){ BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { String line = reader.readLine(); while (line.charAt(0) != a ){ System.out.println(line); line = reader.readLine(); } System.out.println("終了します"); } catch (IOException e){ System.out.println(e); } } }
https://w.atwiki.jp/kgitks/pages/15.html
ログイン関連のJavaソースコード。 ログインに3回失敗した場合に行う処理について記述した。 LoginManager package manager; import java.text.DateFormat; import java.text.ParseException; import java.util.Calendar; import java.util.Date; public class LoginManager { private DBAccess_login dba_login; /** * コンストラクタ。同時にDBAccess_loginのオブジェクトを生成する。 */ public LoginManager(){ this.dba_login=new DBAccess_login(); } /** * 3回ログインに失敗した後、再ログイン可能か調べるメソッド * 現在時刻とログイン失敗時刻の差が1時間以内であればfalseを返す * @param misseditme 3回目のログイン失敗時刻 * @return ログイン可否 * @throws ParseException */ public boolean isRelogin(String missedtime) throws ParseException{ boolean result=true; String nowtime=getNowTime(); System.out.println(nowtime); //ログイン失敗日をyyyy/mm/dd形式で取得 String miss_ymd=format_ymd(missedtime); //現在日をyyyy/mm/dd形式で習得 String now_ymd=format_ymd(nowtime); //ログイン失敗時の時刻を秒単位で取得 int miss_hms=format_hms(missedtime); //現在の時刻を秒単位で取得 int now_hms=format_hms(nowtime); //失敗日と現在日の差を取得 int dif=differenceDays(now_ymd,miss_ymd); if(dif==0){//同日の場合、時間で比較 if((now_hms-miss_hms) 3600){ result=false; } }else if(dif==1 miss_hms 82800 now_hms 3600){//1日違い、失敗時刻が23時以降、現在時刻が1時未満の場合 now_hms+=82800; System.out.println(now_hms); System.out.println(miss_hms); if(now_hms miss_hms){ result=false; } } //判別結果を返す return result; } /** * yyyymmdd~形式からyyyy/mm/dd形式に変換するメソッド * @param ymd yyyymmdd形式の年月日(yyyymmddhhmmss形式も可) * @return yyyy/mm/dd形式の年月日 */ public String format_ymd(String ymd){ String format_ymd=ymd.substring(0, 4)+"/" +ymd.substring(4, 6)+"/" +ymd.substring(6, 8); return format_ymd; } /** * yyyymmddhhmmss形式から秒単位形式に変換するメソッド * @param ymdhms * @return 時分秒を秒に揃えた整数 */ public int format_hms(String ymdhms){ int hms=Integer.parseInt(ymdhms.substring(8,10))*3600 +Integer.parseInt(ymdhms.substring(10,12))*60 +Integer.parseInt(ymdhms.substring(12,14)); return hms; } /** * 現在の日時をyyyymmddhhmmss形式で取得するメソッド * @return yyyymmddhhmmss形式で表現された現在日時 */ public String getNowTime(){ Calendar cal1 = Calendar.getInstance(); //(1)オブジェクトの生成 int year = cal1.get(Calendar.YEAR); //(2)現在の年を取得 int month = cal1.get(Calendar.MONTH) + 1; //(3)現在の月を取得 int day = cal1.get(Calendar.DATE); //(4)現在の日を取得 int hour = cal1.get(Calendar.HOUR_OF_DAY); //(5)現在の時を取得 int minute = cal1.get(Calendar.MINUTE); //(6)現在の分を取得 int second = cal1.get(Calendar.SECOND); //(7)現在の秒を取得 String ymd; //yyyymmの形式に変換 if(month 10){ ymd = year+"0"+month; }else{ ymd = year+""+month; } //yyyymmddの形式に変換 if(day 10){ ymd = ymd+"0"+day; }else{ ymd = ymd+""+day; } //yyyymmddhhの形式に変換 if(hour 10){ ymd = ymd+"0"+hour; }else{ ymd = ymd+""+hour; } //yyyymmddhhmmの形式に変換 if(minute 10){ ymd = ymd+"0"+minute; }else{ ymd = ymd+""+minute; } //yyyymmddhhmmssの形式に変換 if(second 10){ ymd = ymd+"0"+second; }else{ ymd = ymd+""+second; } //完成したものを返す return ymd; } //http //sattontanabe.blog86.fc2.com/blog-entry-88.html //から拝借 /** * 2つの日付の差を求めます。 * 日付文字列 strDate1 - strDate2 が何日かを返します。 * * @param strDate1 日付文字列 yyyy/MM/dd * @param strDate2 日付文字列 yyyy/MM/dd * @return 2つの日付の差 * @throws ParseException 日付フォーマットが不正な場合 */ public static int differenceDays(String strDate1,String strDate2) throws ParseException { Date date1 = DateFormat.getDateInstance().parse(strDate1); Date date2 = DateFormat.getDateInstance().parse(strDate2); return differenceDays(date1,date2); } /** * 2つの日付の差を求めます。 * java.util.Date 型の日付 date1 - date2 が何日かを返します。 * * 計算方法は以下となります。 * 1.最初に2つの日付を long 値に変換します。 * ※この long 値は 1970 年 1 月 1 日 00 00 00 GMT からの * 経過ミリ秒数となります。 * 2.次にその差を求めます。 * 3.上記の計算で出た数量を 1 日の時間で割ることで * 日付の差を求めることができます。 * ※1 日 ( 24 時間) は、86,400,000 ミリ秒です。 * * @param date1 日付 java.util.Date * @param date2 日付 java.util.Date * @return 2つの日付の差 */ public static int differenceDays(Date date1,Date date2) { long datetime1 = date1.getTime(); long datetime2 = date2.getTime(); long one_date_time = 1000 * 60 * 60 * 24; long diffDays = (datetime1 - datetime2) / one_date_time; return (int)diffDays; } } LoginController package manager; import java.text.ParseException; public class LoginController { protected void doPost(){ try{ LoginManager lm = new LoginManager(); User user = new User(); //ログイン失敗日時の取得 String missedtime=user.getMissed_time(); //ログイン可能かチェック boolean logincheck = lm.isRelogin(missedtime); if(!logincheck){//ログインできないと判断された場合 //login_error.jspに遷移 System.out.println("ログインできましぇん"); }else{ //menu.jspに遷移 System.out.println("ログインできるよ!やったねタエちゃん!"); } }catch (ParseException e){ } } } User package manager; public class User { //新しいメンバ変数の追加(ログイン失敗時刻) private String missed_time="20130804232251"; //コンストラクタも新しく用意する。 public User(){} //セッターゲッターも新しく用意する。 public String getMissed_time() { return missed_time; } public void setMissed_time(String missed_time) { this.missed_time = missed_time; } }